Mam zestaw danych podany poniżej nazwa kol1 kol2 a 10,3 10,9 b 11 15 c 20 7.2 d 6,2 6.2 e 5,3 5.4 f 4,5 4,0 chcę porównać col1 i col2 mojego df i chcę utworzyć inną kolumnę, w której porównując wartości col1 i col2, jeśli wartość col2 rośnie z col1, chcę wpisać rosnący obok nich w mojej kolumnie tam i jeśli są malejące, a następnie chcę pisać malejące i bez zmian, jeśli są takie same i chcę, aby moja produkcja była taka nazwa kol1 kol2 kol3 a 10,3 10,9 rosnąco b 11 15 rosnąco c 20 7,2 malejąco d 6,2 6,2 bez zmian e 5,3 5,4 zwiększanie f 4,5 4,0 malejąco
2021-01-31 08:15:49
Z dplyrem: df%>% mutate (Col3 = ifelse (col2 == col1, "bez zmiany", ifelse (col2> col1, „rosnący”, „malejący”))) Lub używając case_when zgodnie z sugestią @akrun: df%>% mutate (Col3 = case_when (col1 == col2 ~ "bez zmian", col2> col1 ~ "Rosnąco", TRUE ~ „malejąco”)) Wynik: nazwa kol1 kol2 kol3 1 a 10,3 10,9 rosnąco 2 b 11,0 15,0 rosnąco 3 c 20,0 7,2 malejąco 4 d 6,2 6,2 bez zmian 5 e 5,3 5,4 rosnąco 6 f 4,5 4,0 malejąco Dane: df <-structure (list (name = c ("a", "b", "c", "d", "e", "f"), col1 = c (10.3, 11, 20, 6,2, 5,3, 4,5), col2 = c (10,9, 15, 7,2, 6,2, 5,4, 4)), class = "data.frame", row.names = c (NA, -6L)) | Możemy odjąć col1 od col2, a następnie użyć znaku do przypisania wartości df $ col3 <- c ("malejąco", "bez zmian", "zwiększanie") [znak (df $ col1 - df $ col2) + 2] df # nazwa kol1 kol2 kol3 # 1 a 10,3 10,9 malejąco # 2 b 11,0 15,0 malejąco # 3 c 20,0 7,2 rosnąco # 4 d 6,2 6,2 bez zmian # 5 e 5,3 5,4 malejąco # 6 f 4,5 4,0 rosnąco Lub używając dplyr, możemy użyć case_when biblioteka (dplyr) df%>% mutate (col3 = case_when (col1 == col2 ~ "bez zmian", col1> col2 ~ "rosnąco", TRUE ~ „malejąco”)) | Podstawa R df $ kol3 <-with (df, ifelse (kol1> kol2, "malejąco", ifelse (kol1